Перейти к основному содержимому

5.01. Знаки препинания

Разработчику Архитектору

Знаки препинания

Два важных вопроса, которые мучают начинающих программистов:

  1. Когда использовать кавычки двойные ("), одинарные ('), а когда апострофы ()?
  2. Когда использовать точки (.), запятые (,) и точку с запятой (;)?

Оба типа кавычек допустимы для строк:

let name = "John";
let message = 'Hello!';

Выбор зависит от контента строки и личного/командного стиля:

let sentence = "He's a developer"; // удобнее двойные
let quote = '"Hello", she said'; // удобнее одинарные

ES6+ : шаблонные строки используют обратные кавычки ` :

let greeting = `Hello, ${name}`;

Апострофы () — не используются в JS как часть синтаксиса, но могут быть в строковых значениях.

В сообществе JS чаще используется одинарный стиль (особенно при использовании ESLint или Prettier), но всё зависит от стандарта проекта.

Точка (.) : используется для доступа к свойствам и методам объектов:

console.log("Hello");

Запятая (,) : разделяет параметры функций, элементы массивов, объявления переменных:

let x = 1, y = 2, z = 3;
function greet(name, age) {}

Точка с запятой (;) : не обязательна в JS благодаря ASI (Automatic Semicolon Insertion), но рекомендуется использовать для избежания ошибок:

let a = 5;
let b = 10;
console.log(a + b);

Используйте точки с запятой, особенно если вы работаете в строгих средах или с минификаторами.

Нижние подчеркивания «_» в JavaScript применяются по разному - иногда это стиль, а иногда синтаксис. Вообще, в языках программирования _одинарное подчеркивание часто используется как соглашение, чтобы обозначить какую-то внутренность или приватность поля или метода, а также бывает __двойное подчеркивание и _подчеркивание с двух сторон_.

_name — это соглашение о приватности, можно читать или менять. Но важно учесть, что классический JS не поддерживает приватность - но опять же, что за «приватность», мы узнаем из ООП.

class MyClass {
constructor() {
this._logger = "internal"; // просто соглашение
}
}

Современный JS поддерживает настоящую приватность через #:

class MyClass {
#logger = "private"; // реально приватно
}

_ может использоваться для игнорирования в деструктуризации, когда мы разбиваем массив на переменные, можем обозначить, что «это поле не трогать»:

const [first, , third] = [1, 2, 3]; // пропускаем второй
// или:
const [first, _, third] = [1, 2, 3]; // явно игнорируем

Также _ используется как разделитель в числах:

const billion = 1_000_000_000;

Символы «|» и «||» в JavaScript, C#, Java, C++ и Kotlin использутся в общем порядке:

| — это побитовое ИЛИ (bitwise OR).

К примеру, метод(значениеА | значениеБ);

В условиях это логическое ИЛИ, но без сокращённого вычисления.

if (методА() | методБ()) - вызовет и методА, и методБ, даже если методА - true.

|| - логическое ИЛИ (с сокращённым вычислением), можно назвать исключающим.

допустим return a || b - если a true, то b не вернется/не вычислится.

Важно отметить, что в JS логическое ИЛИ с сокращённым вычислением (||) используется так, что выбирается именно первое истинное значение, а не только true/false, к примеру 0 не будет истиной.

console.log(0 || "hello") // "hello"

Важно также уточнить, что | используется в TypeScript для обозначения типов:

let value: string | number; // может быть строкой или числом

Это совсем другое значение — тип объединения, не побитовое ИЛИ.